/**
 * 文件名：@DateFormatValueParser.java <br/>
 * 包名：cn.efunbox.afw.core.mvc.result <br/>
 * 项目名：afw-core <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.core.mvc.result;

import java.text.SimpleDateFormat;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import cn.efunbox.afw.core.util.StringUtil;

/**
 * 类名：DateFormatValueParser  <br />
 *
 * 功能：日期格式化值解析器
 *
 * @author xtwin <br />
 * 创建时间：2015年12月3日 下午6:02:09  <br />
 * @version 2015年12月3日
 */
public class DateFormatValueParser extends AbstractNestedValueParser {
	
	// 日志记录器
	private static final Log logger = LogFactory.getLog(DateFormatValueParser.class);
	
	// 默认格式
	private String format = "yyyyMMddHHmmss";

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月3日 下午6:02:19<br/>
	 * 
	 * @param root
	 * @param property
	 * @param value
	 * @param params
	 * @return <br/>
	 * @see cn.efunbox.afw.core.mvc.result.AbstractNestedValueParser#doParse(java.lang.Object, java.lang.String, java.lang.Object, java.util.Map)
	 */
	@Override
	protected Object doParse(Object root, String property, Object value, Map<String, Object> params) {
		if (null == value) {
			return null;
		}
		
		String format = null;
		
		if (null != params) {
			format = (String) params.get("format");
		}
		
		if (StringUtil.isEmpty(format)) {
			format = this.format;
		}
		
		if (logger.isDebugEnabled()) {
			logger.debug("the value is ready to format : " + value);
		}
		
		// 日期格式化
		value = new SimpleDateFormat(format).format(value);
		
		if (logger.isDebugEnabled()) {
			logger.debug("the value after format is : " + value);
		}
		
		return value;
	}

	/**
	 * @version 2015年12月3日-下午6:03:53
	 */
	public void setFormat(String format) {
		this.format = format;
	}
}
